package br.com.stefanini.schs.ejb.entity;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.*;

@Entity
@Table(name="atividade")
@NamedQueries({
	@NamedQuery(name="Atividade.consultarTodasAtividades", query="Select a From Atividade a"),
	@NamedQuery(name="Atividade.consultarTodasAtividadesFuncionario",query="select a from Atividade a where a.ponto.funcionario.idFuncionario = :idFuncionario"),
	@NamedQuery(name="Atividade.consultarTodasAtividadesFuncionarioProjeto",query="select a from Atividade a where a.ponto.funcionario.idFuncionario = :idFuncionario and a.projeto.idProjeto = :idProjeto"),
	@NamedQuery(name="Atividade.consultarAtividadeFuncionarioDia", query="select a from Atividade a WHERE a.ponto.idPonto = :idPonto"),
	@NamedQuery(name="Atividade.consultaAtividadesFuncionarioProjeto", query="select a from Atividade a WHERE a.ponto.funcionario.idFuncionario = :idFuncionario and a.projeto.idProjeto = :idProjeto"),
	@NamedQuery(name="Atividade.consultarAtividadeProjeto", query="Select a From Atividade a where a.projeto.idProjeto = :idProjeto and a.descricao like :descricaoAtividade"),
	@NamedQuery(name="Atividade.consultarDescricaoAutoComplete" ,query="select a.descricao from Atividade a where a.descricao like :descricao"),
	@NamedQuery(name="Atividade.consultarAtividadePorDescricao", query="select a from Atividade a where a.descricao like :descricao"),
	@NamedQuery(name="Atividade.consultarAtividadeFuncionarioProjeto",query="select a from Atividade a where a.ponto.funcionario.idFuncionario = :idFuncionario and a.projeto.idProjeto = :idProjeto")
})
public class Atividade implements Serializable{
	
	private static final long serialVersionUID = 1L;
	
	@Id
	@SequenceGenerator(name="idAtividade", sequenceName="idAtividade", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE)
	private long idAtividade;
	@Column(name="descricao", length = 1000)
	private String descricao;
	@Column(name="horasTrabalhadas")
	private Date horasTrabalhadas;
	
//***********************relacionamentos***********************
	@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
	@JoinColumn(name="fk_idPonto")
	private Ponto ponto;
	
	@ManyToOne
	@JoinColumn(name="fk_idProjeto")
	private Projeto projeto;
//***********************relacionamentos***********************
	
	public Projeto getProjeto() {
		return projeto;
	}
	public void setProjeto(Projeto projeto) {
		this.projeto = projeto;
	}
	public Ponto getPonto() {
		return ponto;
	}
	public void setPonto(Ponto ponto) {
		this.ponto = ponto;
	}
	public long getIdAtividade() {
		return idAtividade;
	}
	public void setIdAtividade(long idAtividade) {
		this.idAtividade = idAtividade;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public Date getHorasTrabalhadas() {
		return horasTrabalhadas;
	}
	public void setHorasTrabalhadas(Date horasTrabalhadas) {
		this.horasTrabalhadas = horasTrabalhadas;
	}

}
